contribution 与 sdk?

SDK

加载自定义 sdk 的方式

  1. webpack 会将 VS Code 包 external 出去,并不会实际打包,而实际其内容包是底座注入到扩展进程中去的。
  2. 自定义的 sdk 包
    1. 同样需要 external 掉
    2. tsconfig 中引入
    3. import types 包或者在 typings or 根目录下新建 d.ts 文件

状态在扩展之间如何共享?

  1. getExtension 获取扩展的上下文。
  2. 调用 setContext
  3. 通过 command 互相调用
  4. indexdb 缓存写入

文件系统

什么是 fileSystemProvider ?

什么是 folderUri 和 workspaceUri?

搜索(文本搜索、文件搜索) 的支持

  1. 实现 SearchProvider 即可。 但是这只是理论上可行的方式,如果仓库很大的话文本匹配速度会很慢,而且如果没有全量加载文件系统的所有文件,文本搜索的遍历效率很低很低。
    1. VS Code 的实现方式: 首次搜索时,会加载一个包含全仓库文本的压缩包,在 provider 中加载并读取所所。
  2. 搜索接口的实现:需要调用 es 之类的实现,而不是直接通过后端的文件系统搜索实现。

文件系统的协同编辑

解决方案:

  1. xxx 老业务的解决办法: 解锁、抢锁编辑,可以保证每次编辑和修改都是同一个人。
  2. git 的接入,通过分支的概念,需要 commit & push,并且主动合并到 master 之后,才会合入主干。 但是与传统的 git pull/merge 一样需要前端处理解冲突的问题。
  3. vsls 包的接入,通过 websocket 实现的实时协同编辑。

文件系统的设计重难点?

运行

外联无法点击,需要关闭 csp ?

LSP 扩展

VS Code git 的支持方式

  1. 实现 SCMProvider ?

新应用如何接入?

其他扩展

还有其他什么扩展

  1. 表管理
  2. 工作流等
Last Updated:
Contributors: yiliang114